Memory devices are used in a variety of electronic systems including computers, cellular phones, pagers, personal digital assistants, avionic systems, automotive systems, industrial control systems, appliances, etc. Depending on the particular system configuration, the memory devices may either be non-volatile or volatile. A non-volatile memory device retains the data or instructions stored therein after the device has been turned off or power is removed. A volatile memory device, on the other hand, does not retain the stored data or instructions after the device has been turned off. Flash memory has become an important type of non-volatile memory because it is less expensive to manufacture and denser than most other types of memory devices. In addition, Flash memory is electrically erasable and has a life span of up to one million write cycles.
A typical Flash memory includes a plurality of input-output (I/O) buffers configured to form an I/O structure capable of receiving input data of a predetermined word length. For example, an I/O structure configured as a sixteen-bit word is comprised of sixteen I/O buffers where each I/O buffer receives a single bit of the sixteen bit word. During programming, the I/O buffers that are to be programmed are enabled and a programming signal (VPROG) is placed on data nodes of those I/O buffers. If a single bit is to be programmed, programming signal VPROG is placed on the data node corresponding to that single bit. If a plurality of bits are to be programmed, the programming signal VPROG is placed on each data node corresponding to a bit to be programmed. For example, if the second, fourth, and ninth least significant bits of a sixteen bit word are to be programmed, programming signal VPROG is placed on the data nodes of the I/O buffers that correspond to the second, fourth, and ninth least significant bits of the sixteen bit word. The data nodes of the I/O buffers corresponding to the unprogrammed bits are left floating. The voltage level or magnitude of VPROG is dependent on the number of bits being programmed, i.e., the voltage level of VPROG is lower when programming a plurality of bits than when programming a single bit. The largest decrease in VPROG occurs when the maximum number of bits are being programmed. In a sixteen-bit word, the largest decrease in VPROG occurs when all sixteen bits are programmed. A drawback in the voltage level of VPROG being dependent on the number of bits being programmed is that a wide distribution of programming voltages occurs resulting in some bits being programmed to a lower voltage level than desired. This variation may lead to erroneous read operations.
Accordingly, what is needed is a method and a structure for maintaining the programming voltage at a specified level independent of the number of bits being programmed.